'''
我们正在玩猜数字游戏。猜数字游戏的规则如下：
我会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
如果你猜错了，我会告诉你，我选出的数字比你猜测的数字大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果，返回值一共有三种可能的情况：
-1：你猜的数字比我选出的数字大 （即 num > pick）。
1：你猜的数字比我选出的数字小 （即 num < pick）。
0：你猜的数字与我选出的数字相等。（即 num == pick）。
返回我选出的数字。
示例 1：
输入：n = 10, pick = 6
输出：6
示例 2：
输入：n = 1, pick = 1
输出：1
示例 3：
输入：n = 2, pick = 1
输出：1
提示：
1 <= n <= 231 - 1
1 <= pick <= n
'''
import random
class Solution:
    def guess(self,num,pick):
        if num==pick:
            return 0
        elif num>pick:
            return -1
        else:
            return 1
    def guessNumber(self,n):
        pick = random.randint(1,n)  #范围[1,n]包括1和n
        print(pick)
        left,right= 1,n
        while left<=right:
            mid=left + (right-left)//2  #防止溢出不使用（right+left）//2
            if self.guess(mid,pick)==0:
                return mid
            elif self.guess(mid,pick)==-1:
                right=mid-1
            else:
                left=mid+1
#示例
if __name__ == '__main__':
    print('请输入数的范围：')
    n=int(input())
    print(Solution().guessNumber(n))
